/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sapra.dep.conexion;



import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.sapra.Prefactura.PrefacturaMO;
import org.sapra.core.DBManager;
import org.sapra.dao.Periodo;
import org.sapra.dep.CalendarioFacturacion;
import org.sapra.dep.UsuarioMO;
import org.sapra.dep.EmpresaMO;
import org.sapra.dep.BanorteCuenta;
import org.sapra.dep.BanorteFile;
import org.sapra.dep.HeaderMO;
import org.sapra.dep.DataRow;


/**
 *
 * @Luis Guerrero
 */

public class DAC_Ext extends DAC{

    public DAC_Ext(){}
    public  ArrayList<CalendarioFacturacion> fechaFacturacion(int fk_empresaId){
            ArrayList<CalendarioFacturacion> lista=new ArrayList<CalendarioFacturacion>();
             CalendarioFacturacion cf=null;
             try {
                 Class.forName("com.mysql.jdbc.Driver").newInstance();
                 conn = (Connection) DriverManager.getConnection(url);
                 stmt = (Statement) conn.createStatement();
                 String sql="SELECT  * FROM calendariofacturacionpracticantes" +
                                "   WHERE NOT EXISTS (SELECT * FROM factura" +
                                "   WHERE calendariofacturacionpracticantes.calendarioFacturacionPracticantesId = factura.fk_periodo)" +
                                "   and fk_empresaId="+fk_empresaId;
                 System.out.println(sql);
                 rs=stmt.executeQuery(sql);
                  while(rs.next()){
                       cf=new CalendarioFacturacion();
                       cf.setDia_dispersion(rs.getString("dia_dispersion"));
                             cf.setCalendarioFacturacionPracticantesId(rs.getInt("calendarioFacturacionPracticantesId"));
                             cf.setDia_pago(rs.getString("dia_pago"));
                             cf.setDia_gap(rs.getString("dia_gap"));
                             cf.setDia_limite_aut_fac(rs.getString("dia_limite_aut_fac"));
                             cf.setDias_a_pagar_periodo(rs.getString("dias_a_pagar_periodo"));
                             cf.setFk_empresaId(rs.getInt("fk_empresaId"));
                             cf.setDia_inicio(rs.getString("dia_inicio"));
                             cf.setDia_fin(rs.getString("dia_fin"));
                             lista.add(cf);
                  }
                 CloseConnexion();
             }catch (Exception e) {
                  CloseConnexion();
                  e.printStackTrace();
             }
             return lista;
         }

    public static ArrayList<EmpresaMO> empresaCorp(int corporativoId,int opc){
        ArrayList<EmpresaMO> lista=new ArrayList<EmpresaMO>();
        EmpresaMO em=new EmpresaMO();
         int idRs;

        try{
             Class.forName("com.mysql.jdbc.Driver").newInstance();
                 conn = (Connection) DriverManager.getConnection(url);
                 stmt = (Statement) conn.createStatement();
            String sql="";

            switch(opc){
                case 1:sql="SELECT e.empresaId AS id,e.razon_empresa AS razon" +
                           " FROM empresa e " +
                           " ORDER BY e.razon_empresa ASC";
                            break;//Usuario Administrador
                case 2:sql="SELECT e.empresaId AS id," +
                            " e.razon_empresa AS razon" +
                            " FROM empresa e" +
                            " INNER join corporativo c " +
                            " ON e.fk_corporativoId=c.corporativoId" +
                            " WHERE c.corporativoId="+corporativoId+" " +
                            " ORDER BY e.razon_empresa ASC";
                             break;//UsuarioCorporativo
                case 3:sql="SELECT e.empresaId AS id," +
                            " e.razon_empresa AS razon " +
                            " FROM empresa e " +
                            " INNER  JOIN corporativo c " +
                            " ON e.fk_corporativoId=c.corporativoId " +
                            " INNER JOIN grupocorporativo g " +
                            " ON c.fk_grupoCorporativoId=g.grupoCorporativoId " +
                            " WHERE g.grupoCorporativoId=" +corporativoId+" " +
                            " ORDER BY e.razon_empresa ASC";
                            break;
                case 4:sql="SELECT e.empresaId AS id,e.razon_empresa AS razon " +
                            " FROM empresa e " +
                            " WHERE e.empresaId="+corporativoId;
                            break;

            }

            rs=stmt.executeQuery(sql);
            while(rs.next()){
                em=new EmpresaMO();
                em.setEmpresaId(rs.getInt("id"));
                em.setRazonEmpresa(rs.getString("razon"));
                lista.add(em);
            } CloseConnexion();
             }catch (Exception e) {
                  CloseConnexion();
                  e.printStackTrace();
             }
        return lista;
    }

    

        public EmpresaMO empresa(int empresaId){
              EmpresaMO emp=null;
              String sql="";
               DBWRAP db = new DBWRAP();
               db.getConnection();
                ResultSet superRs;
                int idRs;
              try {
                  sql="SELECT * FROM empresa WHERE empresaId="+empresaId+";";
                  superRs=db.select(sql);
                  while (superRs.next()) {
                      emp = new EmpresaMO();
                      emp.setEmpresaId(superRs.getInt("empresaId"));
                      emp.setRazonEmpresa(superRs.getString("razon_empresa"));
                      emp.setFk_bancoId(superRs.getInt("fk_bancoId"));
                      emp.setRazon_factura(superRs.getString("razon_factura"));
                  }
                  if(db!=null){
                            db.close();
                            db=null;
                        }
              }catch(SQLException exs)
                {
                        if(db!=null){
                            db.close();
                            db=null;
                        }
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, exs);
                }catch(Exception ge){
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge);
                }finally {
                       try {
                               if(db!=null){
                                    db.close();
                                    db=null;
                                }
                       }catch(Exception ge1){
                               Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge1);
                       }
                     }
              return emp;
          }
        public BanorteCuenta banorteCuenta(int id){
              BanorteCuenta b=null;
              String sql="";
             List<BanorteCuenta> cuenta;

              try {
                 Class.forName("com.mysql.jdbc.Driver").newInstance();
                 conn = (Connection) DriverManager.getConnection(url);
                 stmt = (Statement) conn.createStatement();
                  sql="SELECT * FROM banorte_cuentas b WHERE fk_practicanteId="+id+";";
                  rs=stmt.executeQuery(sql);
                  while (rs.next()) {
                       b=new BanorteCuenta();
                       b.setFk_practicanteId(rs.getInt("fk_practicanteId"));
                       b.setNumCuenta(rs.getString("numCuenta"));
                       b.setNumTarjeta(rs.getString("numTarjeta"));
                       b.setNumSiga(rs.getInt("numsiga"));
                  }
                  CloseConnexion();
              }catch (Exception e) {
                  //CloseConnexion();
                  e.printStackTrace();
             }

              return b;
          }
          public BanorteCuenta banorteCuenta_Disp(int id){
              BanorteCuenta b=null;
              String sql="";
             List<BanorteCuenta> cuenta;

              try {
                 DBManager db=new DBManager();
                 cuenta = db.getQuery(BanorteCuenta.class,"SELECT * FROM banorte_cuentas b WHERE fk_practicanteId=?",id);
                 db=null;
                 if(cuenta.size()>0){
                    b=(BanorteCuenta)cuenta.get(0);
                 }
              }catch (Exception e) {
                  e.printStackTrace();
             }

              return b;
          }
        public ArrayList<Object> selectAbono(int opcion,int empId,int perId){
         ArrayList<Object> lista=new ArrayList<Object>();
         Object[] o=new Object[4];
         String sql="";
        try{
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = (Connection) DriverManager.getConnection(url);
            stmt = (Statement) conn.createStatement();
            sql="SELECT u.login AS log,a.Cantidad AS cant,a.Comentarios AS com ";
            if(opcion==1)
                     sql+=",a.adeudo_empresaId AS idx FROM adeudo_empresa a ";
                 else
                     sql+=",a.abono_empresaId AS idx FROM abono_empresa a ";

            sql+=" INNER JOIN usuario u " +
                 " ON a.usuarioId=u.usuarioId " +
                 " WHERE a.fk_empresaId="+empId+" AND a.fk_periodoId="+perId;

            rs=stmt.executeQuery(sql);

            while(rs.next()){
                o=new Object[4];
                o[1]=rs.getString("log");
                o[2]=""+rs.getDouble("cant");
                o[3]=rs.getString("com");
                o[0]=""+rs.getInt("idx");
                lista.add(o);
            }
            CloseConnexion();
        }catch (Exception e) {
            CloseConnexion();
            e.printStackTrace();
        }
         return lista;
     }

     public static UsuarioMO corporativo(int UsuarioId){
        UsuarioMO us=new UsuarioMO();
         DBWRAP db = new DBWRAP();
         db.getConnection();
         ResultSet superRs;
                int idRs;
        try{
            String sql="SELECT u.tipoUsuario as tipo," +
                    " e.fk_corporativoId AS corp" +
                    " FROM usuario u" +
                    " INNER JOIN empresa e" +
                    " ON u.fk_empresaId=e.empresaId" +
                    " WHERE u.usuarioId="+UsuarioId;
            superRs=db.select(sql);
            while(superRs.next()){
                us=new UsuarioMO();
                us.setFk_corporativoId(superRs.getInt("corp"));
            }
            if(db!=null){
                            db.close();
                            db=null;
                        }
        }catch(SQLException exs)
                {
                        if(db!=null){
                            db.close();
                            db=null;
                        }
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, exs);
                }catch(Exception ge){
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge);
                }finally {
                       try {
                                if(db!=null){
                                    db.close();
                                    db=null;
                                }
                       }catch(Exception ge1){
                               Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge1);
                       }
                     }
        return us;
    }

     public int grupoCorporativo(int corporativo){
         DBWRAP db = new DBWRAP();
         db.getConnection();
         ResultSet superRs;
         String sql="";
         int GpoCorp=0;
        try{
            sql="SELECT * FROM corporativo where corporativoId="+corporativo;
             superRs=db.select(sql);
            while(superRs.next()){
                GpoCorp=superRs.getInt("fk_grupoCorporativoId");
            }
             if(db!=null){
                            db.close();
                            db=null;
                        }
        }catch(SQLException exs)
                {
                        if(db!=null){
                            db.close();
                            db=null;
                        }
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, exs);
                }catch(Exception ge){
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge);
                }finally {
                       try {
                         if(db!=null){
                            db.close();
                            db=null;
                        }
                       }catch(Exception ge1){
                               Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge1);
                       }
                     }
         return GpoCorp;
     }

      public static ArrayList<Integer> ListaPoliza(Periodo per){
          ArrayList<Integer> ids=new ArrayList<Integer>();
         try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                conn = (Connection) DriverManager.getConnection(url);
                 stmt = (Statement) conn.createStatement();
                 String sql="SELECT fk_practicanteId FROM polizaseguro WHERE fk_prefacturaId="+per.index;
                 rs=stmt.executeQuery(sql);
                 while(rs.next()){
                    int id=rs.getInt("fk_practicanteId");
                    ids.add(id);
                 }
                 CloseConnexion();
         } catch (Exception e) {
             System.out.println("Error en carga de pais");
             CloseConnexion();
         }finally{
            CloseConnexion();
         }
         return ids;
     }

        //Updates

      public static void UpdPolizaSeguro(Periodo per,boolean activar,int pract_id){
             DBWRAP db = new DBWRAP();
             db.getConnection();
            String sql="UPDATE polizaseguro SET pagado="+activar;
            try {
                sql+= " WHERE fk_practicanteid ="+pract_id+" AND fk_prefacturaId="+per.index;
                db.update(sql);
                if(db!=null){
                            db.close();
                            db=null;
                        }
            }catch(SQLException exs)
                {
                if(db!=null){
                            db.close();
                            db=null;
                        }
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, exs);
                }catch(Exception ge){
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge);
                }finally {
                       try {
                               if(db!=null){
                                    db.close();
                                    db=null;
                                }
                       }catch(Exception ge1){
                               Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge1);
                       }
                     }
        }

               public ArrayList<CalendarioFacturacion> periodos(String fechaPago){
              ArrayList<CalendarioFacturacion> lista=new ArrayList<CalendarioFacturacion>();
              CalendarioFacturacion cf=new CalendarioFacturacion();
              String sql="";
               DBWRAP pdb = new DBWRAP();
                ResultSet superRs;
                int idRs;
              try {
                  sql=" SELECT c.fk_empresaid AS emp, " +
                          " c.calendarioFacturacionPracticantesId as cal, " +
                          " e.razon_empresa AS name" +
                          " FROM calendariofacturacionpracticantes c" +
                          " INNER JOIN empresa e" +
                          " ON e.empresaId=c.fk_empresaId" +
                          " WHERE c.dia_pago = '"+fechaPago+"' ORDER BY e.razon_empresa ASC;";
                  superRs=pdb.select(sql);
                  while (superRs.next()) {
                      cf=new CalendarioFacturacion();
                      cf.setFk_empresaId(superRs.getInt("emp"));
                      cf.setCalendarioFacturacionPracticantesId(superRs.getInt("cal"));
                      cf.setEmpresa(superRs.getString("name"));
                      lista.add(cf);
                  }
              }catch(SQLException exs)
                {
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, exs);
                }catch(Exception ge){
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge);
                }finally {
                       try {
                               pdb.close();
                       }catch(Exception ge1){
                               Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge1);
                       }
                     }
              return lista;
          }

               //METODOS AGREGADOS PARA LA DISPERSION
        public  BanorteFile archivoFecha(String fecha,int tipoArchivo,int opc){
            // ArrayList<BanorteFile> lista=new  ArrayList<BanorteFile>();
             BanorteFile f=null;
             String sql="";
             DBWRAP pdb = new DBWRAP();
                ResultSet superRs;
                int idRs;
             try {
                 sql="SELECT * FROM banortefile b ";
                 switch(opc){
                     case 1:sql+=" WHERE FechaServer='"+fecha+"' AND TipoArchivo="+tipoArchivo+" LIMIT 1;";break;
                     case 2:sql+=" ORDER BY IdBanorteFile DESC LIMIT 1";break;

                 }

                 superRs=pdb.select(sql);
                 while(superRs.next()){
                        f=new BanorteFile();
                        f.setIdBanorteFile(superRs.getInt("IdBanorteFile"));
                        f.setNombreArchivo(superRs.getString("NombreArchivo"));
                        f.setDireccionArchivo(superRs.getString("DireccionArchivo"));
                        f.setIdBanorte_header(superRs.getInt("IdBanorte_header"));
                        f.setFechaServer(superRs.getString("FechaServer"));
                        f.setTipoArchivo(superRs.getInt("TipoArchivo"));
                        f.setFk_Usuario(superRs.getInt("Fk_Usuario"));
                       // lista.add(f);
                 }
             }catch(SQLException exs)
                {
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, exs);
                }catch(Exception ge){
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge);
                }finally {
                       try {
                               pdb.close();
                       }catch(Exception ge1){
                               Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge1);
                       }
                     }
             return f;
         }

        public int counterFile(String fecha,int tipoArchivo){
             String sql="SELECT * FROM banortefile b ";
             int counter=0;
             DBWRAP pdb = new DBWRAP();
                ResultSet superRs;
                int idRs;
             try {
                 sql+=" WHERE FechaServer='"+fecha+"' AND TipoArchivo="+tipoArchivo+"";
                 superRs=pdb.select(sql);
                 while(superRs.next()){
                     counter++;
                 }
             }catch(SQLException exs)
                {
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, exs);
                }catch(Exception ge){
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge);
                }finally {
                       try {
                               pdb.close();
                       }catch(Exception ge1){
                               Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge1);
                       }
                     }
             return counter;
         }

        public  HeaderMO query(int option,String fecha){
        HeaderMO h=null;
        DBWRAP pdb = new DBWRAP();
                ResultSet superRs;
                int idRs;
        try {
            String sql="";
             sql="SELECT * FROM banorte_headers b";
             switch(option){
                 case 1:sql+=" ORDER BY idheaders DESC LIMIT 1;";break;
                 case 2:sql+=" WHERE fecha='"+fecha+"'";break;
             }
             superRs=pdb.select(sql);
             while(superRs.next()){
                    h=new HeaderMO();
                    h.setIdHeaders(superRs.getInt("idheaders"));
                    h.setFecha(superRs.getString("fecha"));
                    h.setEstatus(superRs.getInt("estatus"));
                    h.setTipo_registro(superRs.getString("tipo_registro"));
                    h.setClave_servicio(superRs.getString("clave_servicio"));
                    h.setPromotor(superRs.getString("promotor"));
                    h.setNie(superRs.getInt("nie"));
                    h.setRazon_social(superRs.getString("razon_social"));
                    h.setConsecutivo(superRs.getString("consecutivo"));
                    h.setNum_registros(superRs.getString("num_registros"));
                    h.setFiller("");
             }
        }catch(SQLException exs)
                {
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, exs);
                }catch(Exception ge){
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge);
                }finally {
                       try {
                               pdb.close();
                       }catch(Exception ge1){
                               Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge1);
                       }
                     }
        return h;
    }

        public  ArrayList<DataRow> listaRows(int option,int header){
        ArrayList<DataRow> lista=new ArrayList<DataRow>();
        DataRow d=new DataRow();
        DBWRAP pdb = new DBWRAP();
                ResultSet superRs;
                int idRs;
        try {
             String sql="";
             sql=" SELECT * " +
                 " FROM caintra.banorte_datarows ";
             switch(option){
                 case 1:sql+=" WHERE header IS  NULL AND valido=1;";break;
                 case 2:sql+=" WHERE header="+header+" AND valido=1";break;
                 case 3:sql+=" WHERE NOT num_tarjeta_debito='0000000000000000' AND header IS  NULL AND valido=1;";break;
             }
             superRs=pdb.select(sql);
             while(superRs.next()){
                 d=new DataRow();
                 d.setIddatarows(superRs.getInt("iddatarows"));
                 d.setHeader(superRs.getInt("header"));
                 d.setTipo_registro(superRs.getString("tipo_registro"));
                 d.setNum_empleado(superRs.getString("num_empleado"));
                 d.setNombres(superRs.getString("nombres"));
                 d.setApellido_paterno(superRs.getString("apellido_paterno"));
                 d.setApellido_materno(superRs.getString("apellido_materno"));
                 d.setDependencia(superRs.getString("dependencia"));
                 d.setCod_nac_ocupacion(superRs.getString("cod_nac_ocupacion"));
                 d.setNombre_corto(superRs.getString("nombre_corto"));
                 d.setTipo_via(superRs.getString("tipo_via"));
                 d.setCalle(superRs.getString("calle"));
                 d.setNumero(superRs.getString("numero"));
                 d.setTipo_vivienda(superRs.getString("tipo_vivienda"));
                 d.setEntrada(superRs.getString("entrada"));
                 d.setPiso(superRs.getString("piso"));
                 d.setDepartamento(superRs.getString("departamento"));
                 d.setColonia(superRs.getString("colonia"));
                 d.setDelegacion(superRs.getString("delegacion"));
                 d.setClave_estado(superRs.getString("clave_estado"));
                 d.setCp(superRs.getString("cp"));
                 d.setTelefono_part(superRs.getString("telefono_part"));
                 d.setSexo(superRs.getString("sexo"));
                 d.setFecha_nacimiento(superRs.getString("fecha_nacimiento"));
                 d.setNacionalidad(superRs.getString("nacionalidad"));
                 d.setEstado_civil(superRs.getString("estado_civil"));
                 d.setRegimen_matrimonial(superRs.getString("regimen_matrimonial"));
                 d.setEscolaridad(superRs.getString("escolaridad"));
                 d.setTitulo_profesional(superRs.getString("titulo_profesional"));
                 d.setTipo_empleado(superRs.getString("tipo_empleado"));
                 d.setRfc(superRs.getString("rfc"));
                 d.setCurp(superRs.getString("curp"));
                 d.setTipo_alta(superRs.getString("tipo_alta"));
                 d.setTipo_tarjeta(superRs.getString("tipo_tarjeta"));
                 d.setNum_tarjeta_debito(superRs.getString("num_tarjeta_debito"));
                 d.setClave_prod_cuenta(superRs.getString("clave_prod_cuenta"));
                 d.setCod_banco_cuenta(superRs.getString("cod_banco_cuenta"));
                 d.setTipo_cuenta(superRs.getString("tipo_cuenta"));
                 d.setNum_cuenta_afiliado(superRs.getString("num_cuenta_afiliado"));
                 d.setCr_chequera(superRs.getString("cr_chequera"));
                 d.setImpresion_contrato(superRs.getString("impresion_contrato"));
                 d.setSueldo_empleado(superRs.getString("sueldo_empleado"));
                 d.setNum_tarjeta_empleado_pbaja(superRs.getString("num_tarjeta_empleado_pbaja"));
                 d.setFiller(superRs.getString("filler"));
                 d.setFk_practicanteid(superRs.getInt("fk_practicanteid"));
                 d.setValido(superRs.getInt("valido"));
                 d.setMdate(superRs.getDate("mdate").toString());
                 lista.add(d);
             }
        }catch(SQLException exs)
                {
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, exs);
                }catch(Exception ge){
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge);
                }finally {
                       try {
                               pdb.close();
                       }catch(Exception ge1){
                               Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge1);
                       }
                     }
        return lista;
    }

         public String fechaLarga(String str){
        String split[]=str.split("-");
        String fechaNueva=""+split[2]+"-";
        String mes="";
        int opc=Integer.parseInt(split[1]);
        switch(opc){
            case 1:mes="Enero";break;
            case 2:mes="Febrero";break;
            case 3:mes="Marzo";break;
            case 4:mes="Abril";break;
            case 5:mes="Mayo";break;
            case 6:mes="Junio";break;
            case 7:mes="Julio";break;
            case 8:mes="Agosto";break;
            case 9:mes="Septiembre";break;
            case 10:mes="Octubre";break;
            case 11:mes="Noviembre";break;
            case 12:mes="Diciembre";break;
        }
        fechaNueva=fechaNueva+""+mes+"-"+split[0];

        return fechaNueva;
    }
         public  ArrayList<Object> listaBanorteFile(int tipoArchivo,int opc,String fecha){
             ArrayList<Object> listaObj=new ArrayList<Object>();
             Object[] o=null;
             String sql="";
              DBWRAP pdb = new DBWRAP();
                ResultSet superRs;
                int idRs;
             try {
                 sql="SELECT * FROM banortefile b ";
                 switch(opc){
                     case 1:sql+=" WHERE  TipoArchivo="+tipoArchivo+";";break;
                     case 2:sql+=" ORDER BY IdBanorteFile DESC LIMIT 1";break;
                     case 3:sql+=" WHERE  TipoArchivo="+tipoArchivo+" AND FechaServer='"+fecha+"';";break;
                 }
                 superRs=pdb.select(sql);
                 while(superRs.next()){
                        o=new Object[7];
                        o[0]=""+superRs.getInt("IdBanorteFile");
                        o[1]=superRs.getString("NombreArchivo");
                        o[2]=superRs.getString("FechaServer");
                        o[3]=superRs.getString("DireccionArchivo");
                        o[4]=superRs.getInt("IdBanorte_header");
                        o[5]=superRs.getInt("TipoArchivo");
                        o[6]=""+superRs.getInt("Fk_Usuario");
                        listaObj.add(o);
                 }
             }catch(SQLException exs)
                {
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, exs);
                }catch(Exception ge){
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge);
                }finally {
                       try {
                               pdb.close();
                       }catch(Exception ge1){
                               Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge1);
                       }
                     }
             return listaObj;
         }

         public  int repeatCard(String num_tarjeta){
            String sql="";
            int contador=0;
            DBWRAP pdb = new DBWRAP();
                ResultSet superRs;
                int idRs;
            try {
                 sql="SELECT * FROM caintra.banorte_datarows " +
                         " WHERE num_tarjeta_debito='"+num_tarjeta+"'";
                superRs=pdb.select(sql);
                while (superRs.next()) {
                    contador++;
                }
            }catch(SQLException exs)
                {
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, exs);
                }catch(Exception ge){
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge);
                }finally {
                       try {
                               pdb.close();
                       }catch(Exception ge1){
                               Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge1);
                       }
                     }
            return contador;
    }
         public  ArrayList<Object> listaBanorte(int opc,int num,String restriccion,int valido){
        ArrayList<Object> lista=new ArrayList<Object>();
        Object[] o=null;
       DBWRAP pdb = new DBWRAP();
                ResultSet superRs;
                int idRs;
        try{
            String sql="SELECT " +
                    " b.iddatarows as IdDataRow," +
                    " p.practicanteId as IdPracticante," +
                    " e.empresaId as IdEmpresa," +
                    " e.razon_empresa AS empresa," +
                    " b.nombres AS nombre," +
                    " b.apellido_paterno AS apaterno," +
                    " b.apellido_materno as amaterno," +
                    " p.practicanteId AS convenio," +
                    " b.num_tarjeta_debito AS tarjeta," +
                    " b.mdate AS modificacion" +
                    " FROM caintra.banorte_datarows b" +
                    " INNER JOIN practicante p" +
                    " ON b.fk_practicanteid=p.practicanteid" +
                    " INNER JOIN departamento d" +
                    " ON p.fk_departamentoId=d.departamentoId" +
                    " INNER JOIN empresa e" +
                    " ON d.fk_empresaId=e.empresaId";

            if(opc==0)
                sql+=" WHERE b.header IS NULL AND b.valido="+valido;
            else{
                sql+=" WHERE ";
                    switch(opc){
                        case 1:sql+=" e.razon_empresa LIKE '%"+restriccion+"'" +
                                " OR e.razon_empresa LIKE '%"+restriccion+"%' " +
                                " OR e.razon_empresa LIKE '"+restriccion+"%' ";break;
                        case 2:sql+="  b.nombres LIKE '%"+restriccion+"'"+
                                " OR b.nombres LIKE '%"+restriccion+"%'" +
                                " OR b.nombres LIKE '"+restriccion+"%'" +
                                " OR b.apellido_paterno LIKE '%"+restriccion+"'" +
                                " OR b.apellido_paterno LIKE '%"+restriccion+"%'" +
                                " OR b.apellido_paterno LIKE '"+restriccion+"%'" +
                                " OR b.apellido_materno LIKE '%"+restriccion+"'" +
                                " OR b.apellido_materno LIKE '%"+restriccion+"%'" +
                                " OR b.apellido_materno LIKE '"+restriccion+"%'";break;
                        case 3:sql+="  b.num_tarjeta_debito LIKE '%"+restriccion+"'";break;
                        //case 4:sql+="  b.rfc LIKE '%"+restriccion+"'";break;
                }
            }

                     superRs=pdb.select(sql);
                     int cont=0;
                     while(superRs.next()){
                         cont++;
                         o=new Object[10];
                         o[0]=""+cont;
                         o[1]=superRs.getString("empresa");
                         o[2]=superRs.getString("nombre")+" "+superRs.getString("apaterno")+" "+superRs.getString("amaterno");
                         o[3]=superRs.getString("convenio");
                         if(superRs.getString("tarjeta")!=null)
                                 o[4]=superRs.getString("tarjeta");
                         else
                             o[4]="0000000000000000";
                         o[5]="";//cuenta
                         o[6]=fechaLarga(superRs.getString("modificacion").toString().substring(0, 10));
                         o[7]=superRs.getInt("IdDataRow");
                         o[8]=superRs.getInt("IdPracticante");
                         o[9]=superRs.getInt("IdEmpresa");
                         lista.add(o);
                     }
        }catch(SQLException exs)
                {
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, exs);
                }catch(Exception ge){
                       Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge);
                }finally {
                       try {
                               pdb.close();
                       }catch(Exception ge1){
                               Logger.getLogger(PrefacturaMO.class.getName()).log(Level.SEVERE, null, ge1);
                       }
                     }
        return lista;
    }
              public  UsuarioMO SelectUser(int Usuario){
        UsuarioMO user=new UsuarioMO();
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = (Connection) DriverManager.getConnection(url);
            stmt = (Statement) conn.createStatement();
            String sql="SELECT * FROM usuario WHERE usuarioId="+Usuario;
            rs=stmt.executeQuery(sql);
            while(rs.next()){
                user.setUsuarioId(rs.getInt("usuarioId"));
                user.setNombre(rs.getString("nombre"));
                user.setLogin(rs.getString("login"));
                user.setPassword(rs.getString("password"));
                user.setEmail(rs.getString("email"));
                user.setFk_empresaId(rs.getInt("fk_empresaId"));
                user.setTipoUsuario(rs.getString("tipoUsuario"));
                user.setEnviarNotificaciones(rs.getBoolean("enviarNotificaciones"));

            }
            CloseConnexion();
        }
        catch (Exception e) {
            CloseConnexion();
        }
        return user;
    }


}
